home *** CD-ROM | disk | FTP | other *** search
/ Freelog 22 / freelog 22.iso / BAS / Graphism / Render32 / INCLUDE / SHAPES2.INC < prev    next >
Text File  |  1996-02-29  |  5KB  |  165 lines

  1. // Persistence Of Vision Raytracer 2.0
  2. // Standard shapes include file #2.
  3. //
  4. /* Contents:
  5.            Tetrahedron
  6.            Octahedron
  7.            Dodecahedron
  8.            Icosahedron
  9.            Rhomboid
  10.            Hexagon
  11.            HalfCone_Y
  12.            Pyramid
  13.            Pyramid2 
  14.            Square_X
  15.            Square_Y
  16.            Square_Z
  17. */
  18.  
  19. #declare Shapes2_Inc_Temp = version
  20.  
  21. #version 2.0
  22.  
  23. // Shapes by Tom Price [75300,620]:
  24. #declare Tetrahedron = 
  25.  intersection 
  26.   {plane {-y,1}
  27.    plane {-z,1 rotate <19.47,    0, 0>}
  28.    plane {-z,1 rotate <19.47, -120, 0>}
  29.    plane {-z,1 rotate <19.47,  120, 0>}
  30.   }
  31.    
  32. #declare Octahedron = 
  33.  intersection 
  34.   {plane { z, 1 rotate < 35.26438968275, 0, 0>}
  35.    plane { z, 1 rotate <-35.26438968275, 0, 0>}
  36.    plane {-z, 1 rotate < 35.26438968275, 0, 0>}
  37.    plane {-z, 1 rotate <-35.26438968275, 0, 0>}
  38.    
  39.    plane { x, 1 rotate <0, 0, -35.26438968275>}
  40.    plane { x, 1 rotate <0, 0,  35.26438968275>}
  41.    plane {-x, 1 rotate <0, 0, -35.26438968275>}
  42.    plane {-x, 1 rotate <0, 0,  35.26438968275>}
  43.   }
  44.    
  45. #declare Dodecahedron = 
  46.  intersection 
  47.   {plane {-z, 1 rotate <-26.56505117708,    0, 0>}
  48.    plane {-z, 1 rotate <-26.56505117708,  -72, 0>}
  49.    plane {-z, 1 rotate <-26.56505117708, -144, 0>}
  50.    plane {-z, 1 rotate <-26.56505117708, -216, 0>}
  51.    plane {-z, 1 rotate <-26.56505117708, -288, 0>}
  52.    
  53.    plane {-z, 1 rotate <26.56505117708,  -36, 0>}
  54.    plane {-z, 1 rotate <26.56505117708, -108, 0>}
  55.    plane {-z, 1 rotate <26.56505117708, -180, 0>}
  56.    plane {-z, 1 rotate <26.56505117708, -252, 0>}
  57.    plane {-z, 1 rotate <26.56505117708, -324, 0>}
  58.    
  59.    plane { y, 1}
  60.    plane {-y, 1}
  61.   }
  62.    
  63. #declare Icosahedron = 
  64.  intersection 
  65.   {plane {-z, 1 rotate <52.6625,    0, 0>}
  66.    plane {-z, 1 rotate <52.6625,  -72, 0>}
  67.    plane {-z, 1 rotate <52.6625, -144, 0>}
  68.    plane {-z, 1 rotate <52.6625, -216, 0>}
  69.    plane {-z, 1 rotate <52.6625, -288, 0>}
  70.    
  71.    plane {-z, 1 rotate <10.8125,    0, 0>}
  72.    plane {-z, 1 rotate <10.8125,  -72, 0>}
  73.    plane {-z, 1 rotate <10.8125, -144, 0>}
  74.    plane {-z, 1 rotate <10.8125, -216, 0>}
  75.    plane {-z, 1 rotate <10.8125, -288, 0>}
  76.    
  77.    plane {-z, 1 rotate <-52.6625,  -36, 0>}
  78.    plane {-z, 1 rotate <-52.6625, -108, 0>}
  79.    plane {-z, 1 rotate <-52.6625, -180, 0>}
  80.    plane {-z, 1 rotate <-52.6625, -252, 0>}
  81.    plane {-z, 1 rotate <-52.6625, -324, 0>}
  82.    
  83.    plane {-z, 1 rotate <-10.8125,  -36, 0>}
  84.    plane {-z, 1 rotate <-10.8125, -108, 0>}
  85.    plane {-z, 1 rotate <-10.8125, -180, 0>}
  86.    plane {-z, 1 rotate <-10.8125, -252, 0>}
  87.    plane {-z, 1 rotate <-10.8125, -324, 0>}
  88.   }
  89.  
  90. // Shapes by others
  91. // Convenient  finite cone primitive, pointing up in the Y axis
  92. #declare HalfCone_Y = 
  93.  intersection 
  94.   {object {Cone_Y}
  95.    plane  { y, 0}
  96.    plane  {-y, 2}
  97.    translate <0, 1, 0>
  98.    scale <0.5, 1, 0.5>
  99.   }
  100.  
  101. /* Hexagonal Solid, axis along x */
  102. #declare  Hexagon = 
  103.  intersection 
  104.   {plane {z, 1}  /* Rotate 90 in z axis to stand up */
  105.    plane {z, 1 rotate < 60, 0, 0>}
  106.    plane {z, 1 rotate <120, 0, 0>}
  107.    plane {z, 1 rotate <180, 0, 0>}
  108.    plane {z, 1 rotate <240, 0, 0>}
  109.    plane {z, 1 rotate <300, 0, 0>}
  110.    plane { x, 1}
  111.    plane {-x, 1}
  112.   }
  113.  
  114. /* Three Dimensional 4-Sided Diamond */
  115. #declare Rhomboid = 
  116.  intersection 
  117.   {plane {-x, 1 rotate <0, 0, -30>}
  118.    plane { x, 1 rotate <0, 0, -30>}
  119.    plane { z, 1}
  120.    plane {-z, 1}
  121.    plane { y, 1}
  122.    plane {-y, 1}
  123.   }
  124.  
  125. // Classic four-sided pyramids.
  126. // The first can't be used correctly in CSG, the second can.
  127. #declare Pyramid = 
  128.    union { // This isn't true CSG, it's just used for convenience
  129.       triangle { <-1, 0, -1>, <+1, 0, -1>, <0, 1, 0>  }
  130.       triangle { <+1, 0, -1>, <+1, 0, +1>, <0, 1, 0>  }
  131.       triangle { <-1, 0, +1>, <+1, 0, +1>, <0, 1, 0>  }
  132.       triangle { <-1, 0, +1>, <-1, 0, -1>, <0, 1, 0>  }
  133.    scale <1, 2, 1>
  134.    translate -y
  135. }
  136. #declare Pyramid2 = intersection {
  137.    plane { < 1, 0,  0>, 1  rotate <  0, 0,  40>}
  138.    plane { <-1, 0,  0>, 1  rotate <  0, 0, -40>}
  139.    plane { < 0, 0,  1>, 1  rotate <-40, 0,   0>}
  140.    plane { < 0, 0, -1>, 1  rotate < 40, 0,   0>}
  141.    plane { <0, -1, 0>, 0 }
  142.    translate <0 ,-1, 0>
  143. }            
  144.              
  145. // These next three are finite planes.
  146. #declare Square_X = /* Scale-able plane in x */
  147.   union 
  148.    {triangle {<0, 1, -1>, <0, -1, 1>, <0,  1,  1>}
  149.     triangle {<0, 1, -1>, <0, -1, 1>, <0, -1, -1>}
  150.    }
  151.  
  152. #declare Square_Y =  /* Scale-able plane in y */
  153.   union 
  154.    {triangle {<-1, 0, 1>, <1, 0, -1>, < 1, 0,  1>}
  155.     triangle {<-1, 0, 1>, <1, 0, -1>, <-1, 0, -1>}
  156.    }
  157.  
  158. #declare Square_Z =  /* Scale-able plane in z */
  159.   union 
  160.    {triangle {<-1, 1, 0>, <1, -1, 0>, <-1, -1, 0>}
  161.     triangle {<-1, 1, 0>, <1, -1, 0>, < 1,  1, 0>}
  162.    }
  163.  
  164. #version Shapes2_Inc_Temp 
  165.